﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using InfraWEB.BLL;
using InfraWEB.Comum.Enum;

namespace InfraWEB.UI
{
	public partial class UsuarioEdita : Base
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			CheckIfUsuarioIsLogged();
			CheckIfUsuarioHasAccessPermission(int.Parse(Enumeration.TipoUsuarioName.GerenteIndex));
			if (!Page.IsPostBack)
			{
				carregarTipos();
				int userId = (int)Context.Session["EditId"];
				if (userId != 0)
				{
					Usuario user = new Usuario();
					txtLogin.Text = user.GetUsuariosByUsuId(userId)[0].UsuLogin;
					txtNewPassword.Text = "";
					txtConfirmPassword.Text = "";
					txtName.Text = user.GetUsuariosByUsuId(userId)[0].UsuNome;
					txtEmail.Text = user.GetUsuariosByUsuId(userId)[0].UsuEmail;
					ddlType.SelectedIndex = user.GetUsuariosByUsuId(userId)[0].UsuTipo - 1;
				}
				else
				{
					limparCampos();
				}
			}
		}

		private void carregarTipos()
		{
			ddlType.Items.Add(new ListItem(
				Enumeration.TipoUsuarioName.Gerente,
				Enumeration.TipoUsuarioName.GerenteIndex) { Selected = true });
			ddlType.Items.Add(new ListItem(
				Enumeration.TipoUsuarioName.Administrador,
				Enumeration.TipoUsuarioName.AdministradorIndex));
			ddlType.Items.Add(new ListItem(
				Enumeration.TipoUsuarioName.EquipeAdministrativa,
				Enumeration.TipoUsuarioName.EquipeAdministrativaIndex));
			ddlType.Items.Add(new ListItem(
				Enumeration.TipoUsuarioName.Funcionario,
				Enumeration.TipoUsuarioName.FuncionarioIndex));
		}

		protected void limparCampos()
		{
			lblMensagem.Text = "";
			txtLogin.Text = "";
			txtNewPassword.Text = "";
			txtConfirmPassword.Text = "";
			txtName.Text = "";
			txtEmail.Text = "";
			ddlType.SelectedIndex = 0;
		}

		protected void btnCadastrar_Click(object sender, EventArgs e)
		{
			Usuario user = new Usuario();
			int id = (int)Context.Session["EditId"];
			string login = txtLogin.Text;
			string oldPassword = user.GetUsuariosByUsuId(id)[0].UsuSenha;
			string newPassword = txtNewPassword.Text;
			string confirmPassword = txtConfirmPassword.Text;
			string name = txtName.Text;
			string email = txtEmail.Text;
			int type = int.Parse(ddlType.SelectedValue);
			if (login != string.Empty &&
				name != string.Empty &&
				email != string.Empty)
			{
				if (user.GetUsuariosByUsuId(id)[0].UsuLogin != login &&
					user.ChechIfLoginExists(login))
				{
					lblMensagem.Visible = true;
					lblMensagem.Text = "Login já cadastrado. Por favor, tente um login diferente.";
				}
				else
				{
					if (newPassword != string.Empty &&
						newPassword == confirmPassword)
					{
						user.RecordUsuario(id, login, newPassword, name, email, type);
						Context.Items["UserEditStatus"] = "ok";
						Server.Transfer("~/UsuarioLista.aspx");
					}
					else if (newPassword == string.Empty &&
							confirmPassword == string.Empty)
					{
						user.RecordUsuario(id, login, oldPassword, name, email, type);
						Context.Items["UserEditStatus"] = "ok";
						Server.Transfer("~/UsuarioLista.aspx");
					}
					else
					{
						lblMensagem.Visible = true;
						lblMensagem.Text = "Senha de confirmação não confere com a senha anterior. Por favor, tente novamente.";
					}
				}
			}
			else
			{
				lblMensagem.Visible = true;
                lblMensagem.Text = "Por favor, preencha todos os campos obrigatórios.";
			}
		}

		protected void btnCancelar_Click(object sender, EventArgs e)
		{
			Response.Redirect("~/UsuarioLista.aspx");
		}
	}
}
